#include "aop.h"


int aop(){
    std::function<void(int)> f = std::bind(&HT, std::placeholders::_1);


    // before from AA, 1
    // int ht func: 1
    // after from AA, 1
    invoke<AA>(f, 1);               //! 主逻辑函数
    std::cout << "================split===============" << std::endl;


    // before from BB, 1
    // int ht func: 1
    invoke<BB>(f, 1);               //! 主逻辑函数
    std::cout << "================split===============" << std::endl;


    // int ht func: , 11
    // after from CC, 1
    invoke<CC>(f, 1);                //! 主逻辑函数
    std::cout << "================split===============" << std::endl;

    // before from AA, 1
    // before from BB, 1
    // int ht func: 1
    // after from CC, 1
    // after from AA, 1
    invoke<AA, BB, CC>(f, 1);        //! 主逻辑函数

    return 0;
}